#include<bits/stdc++.h>
using namespace std;
int m,n,k,km,state[15][15],z[15],f[15][100010];
void dfs(int x)
{
	if(x==n)
	{
		if(!z[x-1]&&state[1][x])
		{
			++k,z[x]=1;
			for(int i=1; i<=n; ++i)
				f[1][k]=(f[1][k]<<1)+z[i];
		}
		z[x]=0,++k;
		for(int i=1; i<=n; ++i)
			f[1][k]=(f[1][k]<<1)+z[i];
		return;
	}
	if(!z[x-1]&&state[1][x]) 
		z[x]=1,dfs(x+1),z[x]=0;
	dfs(x+1);
	return;
}
void dfss(int v,int p,int x)
{
	if(x==n)
	{
		if(!z[x-1]&&state[v][x]&&!((f[v-1][p]>>(n-x))&1))
		{
			++km,z[x]=1;
			for(int i=1; i<=n; ++i)
				f[v][km]=(f[v][km]<<1)+z[i];
		}
		z[x]=0,++km;
		for(int i=1; i<=n; ++i)
			f[v][km]=(f[v][km]<<1)+z[i];
		return;
	}
	if(!z[x-1]&&state[v][x]&&!((f[v-1][p]>>(n-x))&1)) 
		z[x]=1,dfss(v,p,x+1),z[x]=0;
	dfss(v,p,x+1);
	return;
}
int main()
{
	cin>>m>>n;
	for(int i=1; i<=m; ++i)
		for(int j=1; j<=n; ++j)
			cin>>state[i][j];
	dfs(1);
//	for(int i=1; i<=k; ++i) cout<<f[1][i]<<endl;
	for(int i=2; i<=m; ++i)
	{
		for(int p=1; p<=k; ++p)
			dfss(i,p,1);
		k=km,km=0;
//		for(int j=1; j<=k; ++j) cout<<f[i][j]<<endl;
	}
	cout<<k%100000000<<endl;
}
